using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Lesson5 : MonoBehaviour
{
    public GameObject obj1;
    public GameObject obj2;
    void Start()
    {
        #region 轴角对方法初始化
        //Quaternion q = Quaternion.AngleAxis(角度,轴);
        //X轴旋转60度
        // Quaternion q = Quaternion.AngleAxis(60, Vector3.right);

        //方式一(计算原理,不常用)
        // Quaternion q = new Quaternion(Mathf.Sin(30 * Mathf.Deg2Rad), 0, 0, Mathf.Cos(30 * Mathf.Deg2Rad));
        //方式二(常用)
        Quaternion q2 = Quaternion.AngleAxis(60, Vector3.right);
        obj1.transform.rotation = q2;

        //方式三(同时旋转多个轴)
        Quaternion qX = Quaternion.AngleAxis(60, Vector3.right);
        Quaternion qY = Quaternion.AngleAxis(50, Vector3.up);
        Quaternion qZ = Quaternion.AngleAxis(40, Vector3.forward);

        // 组合旋转（顺序：先 X → 再 Y → 最后 Z）
        obj2.transform.rotation = qZ * qY * qX;  // 注意顺序是 Z * Y * X（从右到左计算）
                                                 // 为什么是 qZ * qY * qX？​
                                                 // 四元数乘法是 ​​从右到左​​ 执行的，即：
                                                 // 先执行 qX（X 轴 60°）
                                                 // 再执行 qY（Y 轴 50°）
                                                 // 最后执行 qZ（Z 轴 40°）
        #endregion

        #region 四元数和欧拉角转换
        //1.欧拉角转四元数
        Quaternion q3 = Quaternion.Euler(60, 0, 0);
        Debug.LogFormat("四元数和欧拉角转换 q3:{0}", q3);
        //2.四元数转欧拉角
        Debug.LogFormat("四元数转欧拉角 eulerAngles:{0}", q3.eulerAngles);
        #endregion
    }

    // Update is called once per frame
    void Update()
    {
        
    }
}
